package com.demo.java.OD651_700.OD666;

import java.math.BigDecimal;
import java.util.Scanner;
/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【人民币转换(B卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/148084925
 */
public class OdMain {
        // 数字对应的中文字符
        private static final String[] numberWords = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
        // 各个单位，四位一组，分别对应“仟”、“佰”、“拾”和个位
        private static final String[] units = {"仟", "佰", "拾", ""};
        // 更大的单位（亿、万、元）
        private static final String[] bigUnits = {"亿", "万", "元"};

        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            // 读取输入
            String input = scanner.nextLine().trim();
            BigDecimal amount = new BigDecimal(input);
            long integerPart = amount.longValue(); // 获取整数部分
            BigDecimal fractional = amount.remainder(BigDecimal.ONE).multiply(new BigDecimal(100)); // 获取小数部分
            int fractionalPart = fractional.intValue();
            int jiao = fractionalPart / 10; // 获取角
            int fen = fractionalPart % 10; // 获取分

            // 组合结果并输出
            String result = "人民币" + convertIntegerPart(integerPart) + convertFractionalPart(jiao, fen);
            System.out.println(result);
        }

        // 处理整数部分
        private static String convertIntegerPart(long num) {
            if (num == 0) return "零元"; // 如果整数部分为0，直接返回“零元”

            long yi = num / 1_0000_0000L % 1_0000L; // 计算“亿”部分
            long wan = num / 1_0000L % 1_0000L; // 计算“万”部分
            long yuan = num % 1_0000L; // 计算“元”部分
            StringBuilder sb = new StringBuilder();
            boolean needYiZero = false, needWanZero = false;

            if (yi > 0) {
                sb.append(convertFourDigits((int) yi)).append("亿");
                needWanZero = (wan < 1000) && (wan != 0); // 判断“万”部分是否需要补零
            }
            if (wan > 0) {
                if (sb.length() > 0 && (wan < 1000 || needWanZero)) sb.append("零");
                sb.append(convertFourDigits((int) wan)).append("万");
            } else if (yi > 0) {
                needYiZero = true;
            }
            if (yuan > 0 || (yi == 0 && wan == 0)) {
                if ((sb.length() > 0 && (yuan < 1000 || needYiZero)) && yuan != 0) sb.append("零");
                sb.append(convertFourDigits((int) yuan));
            }
            if (sb.length() == 0) sb.append("零"); // 如果没有数字，添加“零”
            sb.append("元");
            return sb.toString().replaceAll("零+", "零").replaceAll("^零|零$", "");
        }

        // 转换四位数
        private static String convertFourDigits(int num) {
            if (num == 0) return "";
            char[] digits = String.format("%04d", num).toCharArray();
            StringBuilder sb = new StringBuilder();
            boolean needZero = false;
            for (int i = 0; i < 4; i++) {
                int digit = digits[i] - '0';
                if (digit != 0) {
                    if (needZero) {
                        sb.append("零");
                        needZero = false;
                    }
                    if (i == 2 && digit == 1) sb.append("拾");
                    else sb.append(numberWords[digit]).append(units[i]);
                } else {
                    for (int j = i + 1; j < 4; j++) {
                        if (digits[j] != '0') {
                            needZero = true;
                            break;
                        }
                    }
                }
            }
            return sb.toString();
        }

        // 处理小数部分
        private static String convertFractionalPart(int jiao, int fen) {
            if (jiao == 0 && fen == 0) return "整"; // 小数部分为0时，输出“整”
            StringBuilder sb = new StringBuilder();
            if (jiao > 0) sb.append(numberWords[jiao]).append("角");
            if (fen > 0) {
                if (jiao == 0) sb.append("零");
                sb.append(numberWords[fen]).append("分");
            }
            return sb.toString();
        }
}